package com.songlanyun.modules.shop.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import com.songlanyun.common.drive.RootEntity;
import com.songlanyun.modules.rabbitmq.util.SpringContextUtil;
import com.songlanyun.modules.shop.service.ShopService;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;

/**
 * 会员申请商家表
 *
 * @author wuchao
 * @email sunlightcs@gmail.com
 * @date 2020-12-17 15:05:27
 */
@Data
@TableName("yxt_shop_apply")
public class ShopApplyEntity extends RootEntity<Long, ShopApplyEntity> implements Serializable {
    private static final long serialVersionUID = 1L;

    {
        idType = 0;
    }

    /**
     *
     */
    @TableId
    private Long id;
    /**
     *
     */
    private Long userId;

    @TableField(exist = false)
    private ShopEntity shop;

    public ShopEntity loadShop() {
        ShopService shopService = (ShopService) SpringContextUtil.getBean("yxtShopService");
        this.shop = shopService.getShopByUserId(this.getUserId(),this.getUnionBusiness());
        return this.shop;
    }

    /**
     * 企业名称
     */
    private String companyName;
    /**
     * 统一信用代码
     */
    private String creditCode;
    /**
     * 经营范围
     */
    private String businessScope;
    /**
     * 住址
     */
    private String companyAddress;
    /**
     * 企业省市区
     */
    @TableField("`province`")
    private String province;
    /**
     * 法代名称
     */
    private String legalRepresentative;
    /**
     * 法代证件类型（身份证、护照）
     */
    private Integer idType;
    /**
     * 法代证件号码
     */
    private String idNumber;
    /**
     * 法代手机号
     */
    private String lrMobile;
    /**
     * 法代邮箱
     */
    private String lrEmail;
    /**
     * 商家经营执照
     */
    private String businessLicenseImages;
    /**
     * 身份证正反面
     */
    private String identtyImages;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 省的名称
     */
    private String provinceName;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 市名称
     */
    private String cityName;
    /**
     * 区编号
     */
    private String areaCode;
    /**
     * 区名称
     */
    private String areaName;


    /**
     * 微信经度
     */
    private String txLongitude;
    /**
     * 微信纬度
     */
    private String txLatitude;
    /**
     * 店铺名称
     */
    private String shopName;
    /**
     * 店铺地图标点
     */
    private String mapPunctuation;
    /**
     * 店铺详细地址
     */
    private String address;
    /**
     * 店铺logo
     */
    private String logo;
    /**
     * 店铺图片
     */
    private String storeImages;
    /**
     * 客服电话最多30个字
     */
    private String customerServicePhone;
    /**
     * 联系电话
     */
    private String mobile;
    /**
     * 营业时间
     */
    private String businessHours;
    /**
     * 时间段
     */
    private String timeQuantum;
    /**
     * 店铺简介
     */
    private String remark;
    /**
     * 负者人姓名
     */
    private String loser;
    /**
     * 商名主体名称
     */
    private String mainName;
    /**
     * 场地说明
     */
    private String placeRemark;
    /**
     * 审核状态（0待审核，1审核通过，2审核不通过）
     */
    private Integer auditStatus;
    /**
     * 审核意见
     */
    private String auditRemark;
    /**
     * 审核时间
     */
    private Date auditTime;
    /**
     * 申请时间
     */
    private Date applyTime;
    /**
     *
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /**
     *
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 打赏比例
     */
    private BigDecimal rewardRatio;

    /**
     * 优惠信息
     */
    private String specialOffers;

    /**
     * 是否是联盟商家
     */
    private Boolean unionBusiness;

    @Override
    public Long getIdentity() {
        return id;
    }

    /**
     * 商家审核
     */
    public void setAudit(Integer auditStatus, String auditRemark) {
        this.auditStatus = auditStatus;
        this.auditRemark = auditRemark;
        this.auditTime = new Date();
    }
}
